#字符串运算符
# in:在....里面 not in：不在...里面 +：连接符 *：倍数
# % 字符串的格式化    r:保留原格式,转义字符不发生转义


#字符串切片
# string[1] 获取字符串中的某一个字符
# string[start,end,切片的方向/步数]  默认方向是从左往右，即为1，反方向为-1
# string[::2]  按照步数为2从左往右进行切片
# string[1:3]  字符串的切片，取字符串中的一段字符,包前不包后，可以使用省略写法
# string[5:-1]   负数下标切片
# string[::-1] 倒序输出
# string[-1:-3:-1]  倒序切片，从右往左
result = 't' in 'trans'
print(result)
filename = 'picture.png'
print(filename[1])
print(filename[2:4])
print(filename[-1:-3:-1])


# 练习：hello world
# 逆序输出world
# 正向输出hello
# 逆序输出整个hello world
# 打印获取oll
# 打印llo wo
msg = 'hello world'
print(msg[-1:-6:-1])
print(msg[0:5])
print(msg[::-1])
print(msg[4:1:-1])
print(msg[2:-3])
#按照步长取值
print(msg[::2])


# 字符串的内建函数：默认可以调用内建函数，系统函数
# 大小写：
# capitalize() 将字符串第一个字符转为大写
# title()  将字符串中的每一个单词首字母大写
# upper()   将字符串所有字母大写
# lower()    将字符串所有字母小写
# len() 求字符串的长度
message = 'gao ying jun'
print(message.capitalize())
print(message.title())
msg = message.upper()
print(msg)
print(msg.lower())


# 验证码案例
# s = 'sdjfskdfjSJKDFJSDFJ3838378612718'
# print(len(s))
# code = ''
# import random
# for i in range(4):
#     num = random.randint(0,31)
#     code += s[num]
# print('验证码：'+ code)
# user_input = input("请输入验证码：")
# if user_input.lower() == code.lower():
#     print("验证码输入正确")
# else:
#     print("验证码输入错误")


# 字符串查找，替换
# find()  查找字符在字符串中第一次出现的位置，返回位置index，返回是-1则没有找到
# find('r',beg)  从beg索引位置开始找'r'字符
# find('r',beg,end) 从beg位置开始到end位置结束中间去找'r'字符
# rfind() 从右边开始找  lfind() 从左边开始找
# index() 和find方法一样，区别是没找到会报异常  rindex() lindex()
# replace()  替换字符串中的字符,但是原字符串不会改变
s2 = 'index lucy lucky goods'
position = s2.find('l')
print(position)
position2 = s2.find('l',position+1)
print(position2)
url = 'https://www.baidu.com/img/bd_logo1.png'
index = url.rfind('/')
print(url[index+1:])
s1 = 'index lucy lucky goods'
s3 = s1.replace('y','z')
print(s3)
print(s1)


# 字符串编码内建函数
# gbk 中文 gb2312 简体中文   utf-8 国际编码
# encode 编码   decode 解码
msg = '上课了,认真听课'
result = msg.encode('utf-8')
print(result)
print(type(result))
# 解码
m = result.decode('utf-8')
print(m)


# startswith()  endswith() 返回值为布尔类型
# 判断是否以xxx开头或者结尾
# 应用：文件上传  只能上传图片(jpg,png,bmp,gif)
filename = '笔记.doc'
result = filename.endswith('doc')
print(result)


#  isalpha() :判断字符串所有字符是否是字母
#  isdigit():判断字符串所有字符是否是数字
a = 'sjdkf7'
print(a.isalpha())
b = '1323'
print(b.isdigit())


# join(seq):指定字符作为分隔符，把seq中所有元素合并为一个新的字符串
# seq 可以是字符串或者列表等
m = 'abc'
print('-'.join(m))
list = ['a','c','b']
print(''.join(list))


# strip() lstrip()  rstrip()  去除字符串前后的空格
s = '   hello  '
s = s.strip()
print('3'+ s + '3')


# split(' ',2) 分割字符串,将分割后的字符放入列表中,第二个参数指定切的次数
# count(' ')  计算字符串中指定字符的个数
s = 'hello world hello kitty'
result = s.split(' ',2)
print(result)
n = s.count(' ')
print(n)


'''
字符串内建函数案例练习：
输入两个字符串，从第一个字符串中删除第二个字符串中所有的字符。
例如，输入"They are students."和"aeiou",则删除之后的第一个
字符串变成"Thy r stdnts"
'''
s2 = 'aeiou'
s1 = 'They are students'
for i in s2:
    if i in s1:
        s1 = s1.replace(i,'')
print(s1)


'''
小易喜欢的单词有两个特点：
1.全部都为大写字母
2.连续的单词字母没有相同的  比如ABBC不符合
输入一个单词，判断是不是小易喜欢的单词
'''
# word = input("请输入单词：")
# length = len(word)
# if word.isupper():
#     for i in range(length-1):
#         if word[i] == word[i+1]:
#             print("不是小易喜欢的单词")
#             break
#     else:
#         print("是小易喜欢的单词")
# else:
#     print("不是小易喜欢的单词")


s = ''
while True:
    username = input("请输入用户名，不超过20个字符，如果超过则只有前20个字符有效：")
    password = input("请输入密码：")
    email = input("请输入邮箱：")
    if len(username) > 20:
        username = username[:20]
    msg = "{}\t{}\t{}\n".format(username,password,email)
    msg = msg.expandtabs(20)
    s += msg
    flag = input("退出请按q或者Q：")
    if flag == 'q' or flag == 'Q':
        break
print(s)






